package com.mccken.practice.top100.Top_1$20.Top_28;

import com.mccken.practice.top100.ListNode;
import com.mccken.practice.top100.ListNodeUtil;

/**
 * @program: mccken-collect
 * @description:
 * @author: mccken
 * @create: 2024-02-14 23:17
 **/
public class SwapPairs_24 {
	public ListNode swapPairs(ListNode head) {
		if (head == null || head.next == null) {
			return head;
		}
		ListNode target = head.next;
		swapPairs(head.next.next, head);
		return target;

	}

	public ListNode swapPairs(ListNode fast, ListNode node) {
		node.next.next = node;
		ListNode temp = node.next;
		if (fast == null) {
			node.next = null;
			return temp;
		} else if (fast.next == null) {
			node.next = fast;
			return temp;
		} else {
			node.next = swapPairs(fast.next.next, fast);
			return temp;
		}
	}

	public static void main(String[] args) {
		SwapPairs_24 demo = new SwapPairs_24();
		ListNode listNode = ListNodeUtil.buildListNode(new int[]{1});
//		ListNode listNode = ListNodeUtil.buildListNode(new int[]{1, 2});
//		ListNode listNode = ListNodeUtil.buildListNode(new int[]{1, 2, 3});
//		ListNode listNode = ListNodeUtil.buildListNode(new int[]{1, 2, 3, 4});
		ListNode listNode1 = demo.swapPairs(listNode);
		ListNodeUtil.printListNode(listNode1);
	}
}
